package com.gf.common.util;

import java.util.concurrent.ConcurrentHashMap;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 用户有没有必要重新从数据库中加载用户的信息<br>
 * 比如说管理员禁止该用户发布项目的权利等
 * 
 * @author zhuguifeng guifeng.net@gmail.com
 * @version 创建时间：2013-7-20 下午8:49:35
 */
public class ReloadUserInfoHelper {

	/**
	 * 用户ID---true or false<br>
	 * true 有必要重新加载用户信息到session中
	 */
	private static ConcurrentHashMap<Long, Boolean> reloadMap = new ConcurrentHashMap<Long, Boolean>();

	private static Logger logger = LoggerFactory
			.getLogger(ReloadUserInfoHelper.class);

	private ReloadUserInfoHelper() {

	}

	/**
	 * 查看用户是否有必要重新加载信息<br>
	 * true:有必要，并删除相应的key<br>
	 * false:无
	 * 
	 * @param userId
	 * @return
	 */
	public static boolean getNeedReload(long userId) {
		Object obj = reloadMap.get(userId);
		if (obj != null) {
			reloadMap.remove(userId);
			return true;
		}
		return false;
	}

	/**
	 * 管理员 通知 系统，让指定用户重新加载用户信息
	 * 
	 * @param userId
	 */
	public static void setNeedReload(long userId) {
		logger.info("user " + userId + " need reload user info");
		reloadMap.put(userId, true);
	}

}
